package com.platform.modules.prj.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.platform.modules.prj.entity.PrjProjectEntity;
import com.platform.modules.prj.vo.ProjectPersonnel;
import com.platform.modules.prj.vo.ProjectPersonnelVo;
import com.platform.modules.sys.entity.SysUserEntity;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Dao
 *
 * @author Zhouxw
 * @date 2019-06-20 17:17:28
 */
@Mapper
public interface PrjProjectDao extends BaseMapper<PrjProjectEntity> {

	
	 List<PrjProjectEntity> selectList(@Param("params") Map<String, Object> params);
	 
	 
	 List<PrjProjectEntity> selectList(IPage<PrjProjectEntity> page, @Param("params") Map<String, Object> params);
	
    /**
     * 查询所有列表
     *
     * @param params 查询参数
     * @return List
     */
	@Deprecated
    List<PrjProjectEntity> queryAll(@Param("params") Map<String, Object> params);
    /**
     * 查询类似项目编号
     *
     * @param prjCode 查询参数
     * @return List
     */
    String queryPrjCode(@Param("prjCode")String prjCode);

    /**
     * 自定义分页查询
     *
     * @param page   分页参数
     * @param params 查询参数
     * @return List
     */
    List<PrjProjectEntity> selectPrjProjectPage(IPage page, @Param("params") Map<String, Object> params);
    
    
    /**
     * @descr 一般【机构角色】查看被分配的项目 list
     *
     * @param page   分页参数
     * @param params 查询参数
     * @return List
     */
    List<PrjProjectEntity> selectPrjSuperviseProjectPage(IPage page, @Param("params") Map<String, Object> params);
    
    /**
     * 根据项目ID查询项目经理
	 * @param prjId 项目id
     * @return
     */
    List<SysUserEntity> projectManagerByApp(String prjId);
    
    /**
     * 根据机构ID 项目ID 查询已经分配的人员
	 * @param prjId 项目id
     * @return
     */
    List<ProjectPersonnel> orgPersonnels(@Param("prjId")String prjId, @Param("orgNo")String orgNo);
    
    /**
     * 根据机构查询项目负责人
     * @return
     */
    SysUserEntity projectLeaderByOrg(@Param("orgNo")String orgNo, @Param("prjId")String prjId, @Param("roleCode")String roleCode);
}
